import axios from 'axios'
import { Toast } from 'antd-mobile'
import { getToken, removeToken } from './auth'
// 定义变量，请求个数计数器
let requestCount = 0
// 创建 axios 实例，并配置请求根路径
const instance = axios.create({
    // baseURL: 'http://localhost:8080/',
    baseURL: process.env.REACT_APP_BASEURL,
  })

// 添加请求拦截器
instance.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  Toast.loading('加载中...',0)
  // 每一次请求，请求个数计数器累加
  requestCount++
  console.log('当前请求的配置', config)
  // 获取请求配置中的 url
    const url = config.url
  if(url.startsWith('/user') && !url.startsWith('/user/registered') && !url.startsWith('/user/login')) {
      // 满足条件的情况就在请求头中添加 Authorization: token
      config.headers.Authorization = getToken()
  }
  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});
/**
 * 分析 user 系列接口我们可以得到
 *  1. 需要带上token的接口，都以 / user开头
 *  2. 但是用户注册和用户登录是没哟 token的，虽然也是 / user.但是不需要带上
 * 
 * */ 
// 添加响应拦截器
instance.interceptors.response.use(function (response) {
  // 对响应数据做点什么
    // 对响应数据做点什么
    // 每一次请求结束后，计数器就减少
    requestCount--
    // 如果请求个数计数器为  0，代表所有请求都结束了
    if (requestCount === 0) {
      // 隐藏提示框
      Toast.hide()
    }
    const { data:{status} } = response
    if(status === 400){
      removeToken()
    }
  return response;
}, function (error) {
  Toast.offline('网络连接失败...', 2)
  // 对响应错误做点什么
  return Promise.reject(error);
});
// 导出 axios 实例
export default instance

